<!DOCTYPE html>
<html lang="en-us">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
<meta charset="UTF-8">
<title>Network settings | Elasticsearch Guide [7.7] | Elastic</title>
<link rel="home" href="index.html" title="Elasticsearch Guide [7.7]">
<link rel="up" href="settings.html" title="Configuring Elasticsearch">
<link rel="prev" href="modules-node.html" title="Node">
<link rel="next" href="query-cache.html" title="Node query cache settings">
<meta name="DC.type" content="Learn/Docs/Elasticsearch/Reference/7.7">
<meta name="DC.subject" content="Elasticsearch">
<meta name="DC.identifier" content="7.7">
<meta name="robots" content="noindex,nofollow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.optimizely.com/js/18132920325.js"></script>
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-title" content="Elastic">
    <meta name="application-name" content="Elastic">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd">
    <meta name="yandex-verification" content="d8a47e95d0972434">
    <meta name="localized" content="true">
    <meta name="st:robots" content="follow,index">
    <meta property="og:image" content="https://www.elastic.co/static/images/elastic-logo-200.png">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
    <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
    <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/guide/static/styles.css">
  </head>

  <!--© 2015-2021 Elasticsearch B.V. Copying, publishing and/or distributing without written permission is strictly prohibited.-->

  <body>
    <!-- Google Tag Manager -->
    <script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
    <!-- End Google Tag Manager -->

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-12395217-16');
    </script>

    <!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->
    <script type="text/javascript">
      (function(){var g=function(e,h,f,g){
      this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
      this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
      this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
      this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
      this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}};
      try{(new g(100,"r","QSI_S_ZN_emkP0oSe9Qrn7kF","https://znemkp0ose9qrn7kf-elastic.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_emkP0oSe9Qrn7kF")).start()}catch(i){}})();
    </script><div id="ZN_emkP0oSe9Qrn7kF"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
    <!--END WEBSITE FEEDBACK SNIPPET-->

    <div id="elastic-nav" style="display:none;"></div>
    <script src="https://www.elastic.co/elastic-nav.js"></script>

    <!-- Subnav -->
    <div>
      <div>
        <div class="tertiary-nav d-none d-md-block">
          <div class="container">
            <div class="p-t-b-15 d-flex justify-content-between nav-container">
              <div class="breadcrum-wrapper"><span><a href="/guide/" style="font-size: 14px; font-weight: 600; color: #000;">Docs</a></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="main-container">
      <section id="content">
        <div class="content-wrapper">

          <section id="guide" lang="en">
            <div class="container">
              <div class="row">
                <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                  <!-- start body -->
                  <div class="page_header">
<strong>IMPORTANT</strong>: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
<a href="../current/index.html">current release documentation</a>.
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="setup.html">Set up Elasticsearch</a></span>
»
<span class="breadcrumb-link"><a href="settings.html">Configuring Elasticsearch</a></span>
»
<span class="breadcrumb-node">Network settings</span>
</div>
<div class="navheader">
<span class="prev">
<a href="modules-node.html">« Node</a>
</span>
<span class="next">
<a href="query-cache.html">Node query cache settings »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="modules-network"></a>Network settings<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/modules/network.asciidoc">edit</a>
</h2>
</div></div></div>
<p>Elasticsearch binds to localhost only by default.  This is sufficient for you
to run a local development server (or even a development cluster, if you start
multiple nodes on the same machine), but you will need to configure some
<a class="xref" href="modules-network.html#common-network-settings" title="Commonly used network settings">basic network settings</a> in order to run a real
production cluster across multiple servers.</p>
<div class="warning admon">
<div class="icon"></div>
<div class="admon_content">
<h3>Be careful with the network configuration!</h3>
<p>Never expose an unprotected node to the public internet.</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="common-network-settings"></a>Commonly used network settings<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/modules/network.asciidoc">edit</a>
</h3>
</div></div></div>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">network.host</code>
</span>
</dt>
<dd>
<p>
The node will bind to this hostname or IP address and <em>publish</em> (advertise)
this host to other nodes in the cluster. Accepts an IP address, hostname, a
<a class="xref" href="modules-network.html#network-interface-values" title="Special values for network.host">special value</a>, or an array of any combination of
these. Note that any values containing a <code class="literal">:</code> (e.g., an IPv6 address or
containing one of the <a class="xref" href="modules-network.html#network-interface-values" title="Special values for network.host">special values</a>) must be
quoted because <code class="literal">:</code> is a special character in YAML. <code class="literal">0.0.0.0</code> is an acceptable
IP address and will bind to all network interfaces. The value <code class="literal">0</code> has the
same effect as the value <code class="literal">0.0.0.0</code>.
</p>
<p>Defaults to <code class="literal">_local_</code>.</p>
</dd>
<dt>
<span class="term">
<code class="literal">discovery.seed_hosts</code>
</span>
</dt>
<dd>
<p>
In order to join a cluster, a node needs to know the hostname or IP address of
at least some of the other nodes in the cluster.  This setting provides the
initial list of addresses this node will try to contact. Accepts IP addresses
or hostnames. If a hostname lookup resolves to multiple IP addresses then each
IP address will be used for discovery.
<a href="https://en.wikipedia.org/wiki/Round-robin_DNS" class="ulink" target="_top">Round robin DNS</a> — returning a
different IP from a list on each lookup — can be used for discovery; non-
existent IP addresses will throw exceptions and cause another DNS lookup on the
next round of pinging (subject to <a class="xref" href="networkaddress-cache-ttl.html" title="DNS cache settings">JVM DNS
caching</a>).
</p>
<p>Defaults to <code class="literal">["127.0.0.1", "[::1]"]</code>.</p>
</dd>
<dt>
<span class="term">
<code class="literal">http.port</code>
</span>
</dt>
<dd>
<p>
Port to bind to for incoming HTTP requests. Accepts a single value or a range.
If a range is specified, the node will bind to the first available port in the
range.
</p>
<p>Defaults to <code class="literal">9200-9300</code>.</p>
</dd>
<dt>
<span class="term">
<code class="literal">transport.port</code>
</span>
</dt>
<dd>
<p>
Port to bind for communication between nodes. Accepts a single value or a
range. If a range is specified, the node will bind to the first available port
in the range.
</p>
<p>Defaults to <code class="literal">9300-9400</code>.</p>
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="network-interface-values"></a>Special values for <code class="literal">network.host</code><a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/modules/network.asciidoc">edit</a>
</h3>
</div></div></div>
<p>The following special values may be passed to <code class="literal">network.host</code>:</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">_[networkInterface]_</code>
</span>
</dt>
<dd>
Addresses of a network interface, for example <code class="literal">_en0_</code>.
</dd>
<dt>
<span class="term">
<code class="literal">_local_</code>
</span>
</dt>
<dd>
Any loopback addresses on the system, for example <code class="literal">127.0.0.1</code>.
</dd>
<dt>
<span class="term">
<code class="literal">_site_</code>
</span>
</dt>
<dd>
Any site-local addresses on the system, for example <code class="literal">192.168.0.1</code>.
</dd>
<dt>
<span class="term">
<code class="literal">_global_</code>
</span>
</dt>
<dd>
Any globally-scoped addresses on the system, for example <code class="literal">8.8.8.8</code>.
</dd>
</dl>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="network-interface-values-ipv4-vs-ipv6"></a>IPv4 vs IPv6<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/modules/network.asciidoc">edit</a>
</h4>
</div></div></div>
<p>These special values will work over both IPv4 and IPv6 by default, but you can
also limit this with the use of <code class="literal">:ipv4</code> of <code class="literal">:ipv6</code> specifiers. For example,
<code class="literal">_en0:ipv4_</code> would only bind to the IPv4 addresses of interface <code class="literal">en0</code>.</p>
<div class="tip admon">
<div class="icon"></div>
<div class="admon_content">
<h3>Discovery in the Cloud</h3>
<p>More special settings are available when running in the Cloud with either the
<a href="/guide/en/elasticsearch/plugins/7.7/discovery-ec2.html" class="ulink" target="_top">EC2 discovery plugin</a> or the
<a href="/guide/en/elasticsearch/plugins/7.7/discovery-gce-network-host.html#discovery-gce-network-host" class="ulink" target="_top">Google Compute Engine discovery plugin</a>
installed.</p>
</div>
</div>
</div>

</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="advanced-network-settings"></a>Advanced network settings<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/modules/network.asciidoc">edit</a>
</h3>
</div></div></div>
<p>The <code class="literal">network.host</code> setting explained in <a class="xref" href="modules-network.html#common-network-settings" title="Commonly used network settings">Commonly used network settings</a>
is a shortcut which sets the <em>bind host</em> and the <em>publish host</em> at the same
time. In advanced used cases, such as when running behind a proxy server, you
may need to set these settings to different values:</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">network.bind_host</code>
</span>
</dt>
<dd>
This specifies which network interface(s) a node should bind to in order to
listen for incoming requests.  A node can bind to multiple interfaces, e.g.
two network cards, or a site-local address and a local address. Defaults to
<code class="literal">network.host</code>.
</dd>
<dt>
<span class="term">
<code class="literal">network.publish_host</code>
</span>
</dt>
<dd>
The publish host is the single interface that the node advertises to other nodes
in the cluster, so that those nodes can connect to it. Currently an
Elasticsearch node may be bound to multiple addresses, but only publishes one.
If not specified, this defaults to the “best” address from <code class="literal">network.host</code>,
sorted by IPv4/IPv6 stack preference, then by reachability. If you set a
<code class="literal">network.host</code> that results in multiple bind addresses yet rely on a specific
address for node-to-node communication, you should explicitly set
<code class="literal">network.publish_host</code>.
</dd>
</dl>
</div>
<p>Both of the above settings can be configured just like <code class="literal">network.host</code> — they
accept IP addresses, host names, and
<a class="xref" href="modules-network.html#network-interface-values" title="Special values for network.host">special values</a>.</p>
<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="tcp-settings"></a>Advanced TCP settings<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/modules/network.asciidoc">edit</a>
</h4>
</div></div></div>
<p>Any component that uses TCP (like the <a class="xref" href="modules-http.html" title="HTTP">HTTP</a> and
<a class="xref" href="modules-transport.html" title="Transport">transport</a> layers) share the following settings:</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">network.tcp.no_delay</code>
</span>
</dt>
<dd>
Enable or disable the <a href="https://en.wikipedia.org/wiki/Nagle%27s_algorithm" class="ulink" target="_top">TCP no delay</a>
setting. Defaults to <code class="literal">true</code>.
</dd>
<dt>
<span class="term">
<code class="literal">network.tcp.keep_alive</code>
</span>
</dt>
<dd>
Enable or disable <a href="https://en.wikipedia.org/wiki/Keepalive" class="ulink" target="_top">TCP keep alive</a>.
Defaults to <code class="literal">true</code>.
</dd>
<dt>
<span class="term">
<code class="literal">network.tcp.reuse_address</code>
</span>
</dt>
<dd>
Should an address be reused or not. Defaults to <code class="literal">true</code> on non-windows
machines.
</dd>
<dt>
<span class="term">
<code class="literal">network.tcp.send_buffer_size</code>
</span>
</dt>
<dd>
The size of the TCP send buffer (specified with <a class="xref" href="common-options.html#size-units" title="Unit-less quantities">size units</a>).
By default not explicitly set.
</dd>
<dt>
<span class="term">
<code class="literal">network.tcp.receive_buffer_size</code>
</span>
</dt>
<dd>
The size of the TCP receive buffer (specified with <a class="xref" href="common-options.html#size-units" title="Unit-less quantities">size units</a>).
By default not explicitly set.
</dd>
</dl>
</div>
<h3>
<a id="_transport_and_http_protocols"></a>Transport and HTTP protocols<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/modules/network.asciidoc">edit</a>
</h3>
<p>An Elasticsearch node exposes two network protocols which inherit the above
settings, but may be further configured independently:</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
TCP Transport
</span>
</dt>
<dd>
Used for communication between nodes in the cluster, by the Java
<a href="/guide/en/elasticsearch/client/java-api/7.7/transport-client.html" class="ulink" target="_top">Transport client</a>.
See <a class="xref" href="modules-transport.html" title="Transport">Transport</a>.
</dd>
<dt>
<span class="term">
HTTP
</span>
</dt>
<dd>
Exposes the JSON-over-HTTP interface used by all clients.
See <a class="xref" href="modules-http.html" title="HTTP">HTTP</a>.
</dd>
</dl>
</div>
</div>

</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="modules-node.html">« Node</a>
</span>
<span class="next">
<a href="query-cache.html">Node query cache settings »</a>
</span>
</div>
</div>

                  <!-- end body -->
                </div>
                <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                  <div id="rtpcontainer" style="display: block;">
                    <div class="mktg-promo">
                      <h3>Most Popular</h3>
                      <ul class="icons">
                        <li class="icon-elasticsearch-white"><a href="https://www.elastic.co/webinars/getting-started-elasticsearch?baymax=default&amp;elektra=docs&amp;storm=top-video">Get Started with Elasticsearch: Video</a></li>
                        <li class="icon-kibana-white"><a href="https://www.elastic.co/webinars/getting-started-kibana?baymax=default&amp;elektra=docs&amp;storm=top-video">Intro to Kibana: Video</a></li>
                        <li class="icon-logstash-white"><a href="https://www.elastic.co/webinars/introduction-elk-stack?baymax=default&amp;elektra=docs&amp;storm=top-video">ELK for Logs &amp; Metrics: Video</a></li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>

        </div>


<div id="elastic-footer"></div>
<script src="https://www.elastic.co/elastic-footer.js"></script>
<!-- Footer Section end-->

      </section>
    </div>

<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
  window.initial_state = {}</script>
  </body>
</html>
